package com.zp.self.module.level_4_算法练习.算法.双指针.左右指针;
import org.junit.Test;

/**
 * @author By ZengPeng
 */
public class 力扣_941_有效的山脉数组 {
    @Test
    public void main() {
        
        Solution solution = new 力扣_941_有效的山脉数组().new Solution();
        System.out.println(solution);
    }

    /**
     题目：给定一个整数数组 arr，如果它是有效的山脉数组就返回 true，否则返回 false。
         让我们回顾一下，如果 arr 满足下述条件，那么它是一个山脉数组：
         arr.length >= 3
         在 0 < i < arr.length - 1 条件下，存在 i 使得：
         arr[0] < arr[1] < ... arr[i-1] < arr[i]
         arr[i] > arr[i+1] > ... > arr[arr.length - 1]

         示例 1：
         输入：arr = [2,1]
         输出：false

         示例 2：
         输入：arr = [3,5,5]
         输出：false

         示例 3：
         输入：arr = [0,3,2,1]
         输出：true


     分析：【P 💖💖】
        1.遍历：找到中间节点，然后向下
                --执行耗时:1 ms,击败了100.00% 的Java用户
                --编码耗时:[15:24]

     边界值 & 注意点：
        1.
     **/
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public boolean validMountainArray(int[] arr) {
        int left = 1, right = arr.length-1;
        while (left < arr.length) {
            if(arr[left]==arr[left-1])return false;
            if(arr[left]<arr[left-1])
                break;
            left++;
        }
       while (right >0) {
            if(arr[right]==arr[right-1])return false;
            if(arr[right]>arr[right-1])
                break;
           right--;
        }
        return --left==right && left!=0 && left!=arr.length-1;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}